home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 40
/
Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso
/
Aminet
/
misc
/
emu
/
ATUtilities.lha
/
ATUtilities
/
BASIC
/
ATSERVER.BAS
< prev
next >
Wrap
BASIC Source File
|
2000-09-26
|
3KB
|
120 lines
DEF SEG = &HD000
CLS
rem ATServer:
rem 00: AppID
rem 02: LocalID
rem 04: Version
rem 06: Revision
rem 08: NetworkState
rem 10: NetServerCall
rem 11: NetServerReady
rem 12: NetCommand
rem 14: NetArg1Offset
rem 16: NetArg2Offset
rem 18: NetArg3Offset
rem 20: NetArg4Offset
rem 22: NetActual
rem 24: NetError
rem 26: ExtendedServerData
%GETDIR=1
%CHANGEDIR=2
%OPENFILE=3
%CLOSEFILE=4
%READFILE=5
%WRITEFILE=6
%SEEKFILE=7
%DELETEFILE=8
%RENAMEFILE=9
%CONNECT=5000
%DISCONNECT=4000
server=GetJInt(31,4005,7004,33,1)
IF server=-1 THEN
PRINT ""
PRINT "<< Programmabbruch durch Fehler >>"
PRINT ""
ELSE
PRINT "Server gefunden bei Offset";server
REM ===== Aktuelles Verzeichnis listen =====
CALL CallJInt(server,%GETDIR)
offset=PEEKI(server+14)
laenge=PEEKI(server+16)
FOR i=0 TO laenge
x=PEEK(server+offset+i)
IF x=0 THEN PRINT "" ELSE PRINT CHR$(x);
NEXT
REM ========================================
REM ===== Verzeichnis wechseln =============
vn$="DH0:Sprachen/Aztec-C 3.4a/include"
laenge=LEN(vn$)-1
FOR i=0 TO laenge
POKE server+36+i,ASC(MID$(vn$,i+1,1))
NEXT
POKEI server+14,36
POKEI server+16,laenge
CALL CallJInt(server,%CHANGEDIR)
REM ========================================
CALL FreeJInt(server)
END IF
END
FUNCTION GetJInt(intNum,appID,localID,ver,rev) STATIC
DEF SEG = &HD000
tabelle&=PEEKI(32)
serv=PEEKI(tabelle&+(intNum*2))
IF serv>-1 THEN
IF (PEEKI(serv+08)<>1) THEN
PRINT "FEHLER: Amiga-Server von Janus-Interrupt";intNum;"ist nicht fr
PRINT " Verbindungsaufbau bereit."
GOTO GetJInt.Fehler
END IF
IF (PEEKI(serv+00)<>appID) THEN
PRINT "FEHLER: Amiga-Server von Janus-Interrupt";intNum;"hat eine falsche"
PRINT " Applikations-ID."
GOTO GetJInt.Fehler
END IF
IF (PEEKI(serv+02)<>localID) THEN
PRINT "FEHLER: Amiga-Server von Janus-Interrupt";intNum;"hat eine falsche"
PRINT " Lokal-ID."
GOTO GetJInt.Fehler
END IF
IF (PEEKI(serv+04)<ver) OR (PEEKI(serv+06)<rev) THEN
PRINT "FEHLER: Amiga-Server von Janus-Interrupt";intNum;"hat eine ltere"
PRINT " Version als der PC-Server."
GOTO GetJInt.Fehler
END IF
ELSE
PRINT "FEHLER: Amiga-Server ist nicht aktiv."
GOTO GetJInt.Fehler
END IF
POKEI serv+08,2
CALL CallJInt(serv,%CONNECT)
GOTO GetJInt.Ende
GetJInt.Fehler:
IF FreeServ=1 THEN
POKE serv+09,PEEK(serv+09)-1
END IF
serv=-1
GetJInt.Ende:
GetJInt=serv
END FUNCTION
SUB FreeJInt(serv) STATIC
CALL CallJInt(serv,%DISCONNECT)
END SUB
SUB CallJInt(serv,funcNum) STATIC
DEF SEG = &HD000
POKEI serv+08,1
POKEI serv+12,funcNum
POKE serv+11,1
POKE serv+10,1
WHILE (PEEK(serv+11)=1) : WEND : REM Auf Besttigung warten
END SUB